ホームに戻る
出典 :
Debug.Assert メソッド (System.Diagnostics) | Microsoft Learn Assert の使い方メモ #C# - Qiita
関連 :
[C/C++]アサーション
目次 :

.NETにおけるアサーション

アサーションとは、プログラム中の特定の時点で想定される条件を満たさない場合にエラーを発する機構のこと。
「その時点においては当然そうである」ことを表明し、その状況に無い場合はプログラムを異常停止する。これにより、引数などの誤りをデバッグ段階で検出しやすくなる。
C/C++におけるアサーションと共通の概念だが、.NETの機能として実装されているため言語を問わず利用できる。
デバッグビルドでのみ機能する点もC/C++と共通。

C#での実装例

using System.Diagnostics; : private void DoSomething() { int val = 40; // val が 0 より大であることを確認、 // そうでない場合はメッセージボックスを表示する Debug.Assert( val > 0 ) }
上記は基本的な Debug.Assert() の例である。Debug.Assert() は System.Diagnostics 名前空間に属し、引数に「その時点で true となっているはずの」ブール(論理)式をとる。
このブール式が false の場合は、ファイル名と行番号を含む呼び出し履歴を示すメッセージボックスが表示される。
(これにより、プログラムのどの箇所でアサーション違反となったのかが特定できる。)
メッセージボックスには以下のボタンが表示され、その後の処置を選択することができる。

Debug.Assert() のバリエーション

上述の、ブール式のみを引数にとるもののほかに、複数のオーバーロードが存在する。
以下に一部を抜粋する。全容は出典元を参照。
Assert( Boolean ) 渡された引数(条件)が false の場合、呼び出し履歴をメッセージボックスとして表示する
Assert( Boolean, String ) 渡された第1引数(条件)が false の場合、第2引数で指定されたメッセージ、およびコールスタックをメッセージボックスとして表示する
Assert( Boolean, Debug.AssertInterpolatedStringHandler ) 渡された第1引数(条件)が false の場合、第2引数で指定されたメッセージ、およびコールスタックをメッセージボックスとして表示する
上記の String と比較してパフォーマンスに優れる
(.NET6以降で使用可能)